package cn.iocoder.yudao.module.system.controller.admin.gugu.vo.subjectselection;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.List;

/**
 * 选科功能响应 VO
 */
@Schema(description = "选科功能响应数据")
@Data
public class SubjectSelectionRespVO {

    @Schema(description = "专业大类列表")
    private List<MajorCategoryInfo> majorCategories;

    @Schema(description = "学校列表")
    private List<SchoolInfo> schools;

    @Schema(description = "最优选科组合")
    private List<String> optimalSubjectCombination;

    @Schema(description = "总体匹配率", example = "86%")
    private String overallMatchRate;

    @Schema(description = "总开设院校数", example = "1200")
    private Integer totalColleges;

    @Schema(description = "计算类型", example = "category")
    private String calculationType;

    @Schema(description = "专业大类信息")
    @Data
    public static class MajorCategoryInfo {

        @Schema(description = "专业大类名称", example = "哲学类")
        private String categoryName;

        @Schema(description = "专业大类下的专业数量", example = "4")
        private Integer majorCount;

        @Schema(description = "最优选科组合", example = "历史、思想政治、化学")
        private String optimalCombination;

        @Schema(description = "开设院校数", example = "74")
        private Integer collegeCount;

        @Schema(description = "匹配率", example = "86%")
        private String matchRate;

        @Schema(description = "是否可选择", example = "true")
        private Boolean selectable = true;

        @Schema(description = "专业大类详细信息")
        private String description;
    }

    @Schema(description = "学校信息")
    @Data
    public static class SchoolInfo {

        @Schema(description = "学校名称", example = "北京大学")
        private String schoolName;

        @Schema(description = "学校UUID", example = "c24a67f87405b82bec08a5638c32f282")
        private String schoolUuid;

        @Schema(description = "专业数量", example = "120")
        private Integer majorCount;

        @Schema(description = "最优选科组合", example = "物理、化学、生物")
        private String optimalCombination;

        @Schema(description = "匹配率", example = "95%")
        private String matchRate;

        @Schema(description = "是否可选择", example = "true")
        private Boolean selectable = true;

        @Schema(description = "学校描述信息")
        private String description;

        @Schema(description = "招生专业大类列表")
        private List<String> majorCategories;
    }
}
